package demo1;

public class test {
//    public static Animal func2() {//返回值的向上转型
//        return new Dog("qq",2);
//
//    }
//    public static void func(Animal animal) {
//
//    }
    public static void main(String[] args) {
//        Dog dog=new Dog();
//        dog.age=1;
//        dog.name="qq";
//        dog.eat();
//        Cat cat=new Cat();
//        cat.age=2;
//        cat.name="ww";
//        cat.eat();
//        Animal animal=new Dog("qq",2);//向上转型
//        Animal animal1=new Cat("ww",3);//向上转型，二者均是直接赋值
//        animal.eat();
//        animal1.eat();
//        Dog dog=new Dog("qq",2);
//        func(dog);//通过参数传递
//        Cat cat=new Cat("ww",3);
//        func(cat);//通过参数传递
        Animal animal=new Dog("qq",2);
        if(animal instanceof Dog){//这个用来判断animal是否引用了Dog这个类型的对象
            Dog dog=(Dog) animal;
            dog.eat();
        }else{
            System.out.println("animal not instanceof Dog");
        }
        if(animal instanceof Cat){
            Cat cat=(Cat) animal;
            cat.eat();
        }else{
            System.out.println("animal not instanceof Cat");//因为此时animal引用的是Dog这个类型的对象
        }
    }
}
